
import java.util.Date;


class OutClass{

    public int a;
    static int b;
    public void methodA() {
        a = 10;
        System.out.println(a);
    }
    public static void methodB() {
        System.out.println(b);
    }

     static class  InnerClass{
         public void methodInner() {
            // a = 100;//编译失败，a不是静态变量
             b = 200;
             //methodA();//编译失败,methodA不属于静态方法
             methodB();
         }


    }
}
class PetDog{
    static {
        //静态代码块，初始化静态成员变量
    }
    {
        //初始化成员变量（构造代码块）
    }


    //成员属性（成员变量）
    //成员方法
    private String name;
    private String color;

    public PetDog() {

        this("xiaobai","heise");//通过this去调用带参数的构造方法，这行代码可以代替下面的两行代码（起到简化代码的作用）

        /*this.name = "xiaobai";
        this.color = "heise";*/
    }
    public PetDog(String name, String color) {
        this.name = name;
        this.color = color;
    }

    /*public void setName(String name) {
            this.name = name;//此时这里就需要用到this引用（我们的参数与成员变量相同）
        }



        public void setColor(String color) {
            this.color = color;
        }
    */
    public void barks() {
        System.out.println(name + "旺旺");

    }

    public void wag() {
        System.out.println(this.name + "摇尾巴");
        //我们要使用this引用，不然我们不知道我们当前哪个对象引用的
    }
}
public class Test {

    public static void main(String[] args) {
        OutClass.InnerClass innerClass = new OutClass.InnerClass();
    }
    public static void main2(String[] args) {
        OutClass outClass = new OutClass();
        OutClass.InnerClass innerClass = outClass.new InnerClass();//创建内部类对象
    }

    public static void main1(String[] args) {
        PetDog petDog = new PetDog();
        {
            //这就是一个普通代码块
        }
    }
}
